﻿#ifndef BLOODPRESSURE_H
#define BLOODPRESSURE_H

#include<QObject>
#include<QLabel>
#include<QElapsedTimer>
#include<QTime>
#include<QtSerialPort/QSerialPort>
#include<qwt_plot.h>
#include<qwt_plot_grid.h>
#include<qwt_plot_panner.h>
#include<qwt_plot_magnifier.h>
#include<qwt_plot_curve.h>
#include<qwt_legend.h>
#include<qwt_scale_draw.h>
#include<qwt_text.h>
#include"plotdata.h"
#include"serialtool.h"

class BloodPressure:public QObject
{
    Q_OBJECT
public:
    BloodPressure(QwtPlot*plot,QLabel*hbp,QLabel*lbp,QLabel*pulse);
    void setParam(int sampleRate,double xWidth);
    void initPlot();
    void buildPlot();
    void drawHistoryData(quint64 ulStartTime,QVector<unsigned char>vctHBP,QVector<unsigned char>vctLBP,QVector<unsigned char>vctPulse);
    void addPlotGrid();
    void addManifier();
    void addLegend();
    void addPanner();
    void addCurve();
    //串口操作
    void serialPortInit();

    SerialTool*m_serial;
private slots:
    void receiveData();
protected:
    void updateCurve(QByteArray message);
private:
    //内部类，用于测试
    class TestData
    {
    public:
        QwtPlotMagnifier*pManifier;
        QwtPlotCurve*pHBPCurve;
        PlotData*pHBPData;
        QwtPlotCurve*pLBPCurve;
        PlotData*pLBPData;
        QwtPlotCurve*pPulseCurve;
        PlotData*pPulseData;
        //平移效果
        QwtPanner*pPanner;
        QwtInterval interval;
        QElapsedTimer eTimer;
    };
    QwtPlot*m_BPPlot;
    TestData*m_testData;
    //保存传出的label
    QLabel*m_hbp;
    QLabel*m_lbp;
    QLabel*m_pulse;
};

#endif // BLOODPRESSURE_H
